Server Configuration
The configuration of a Web server really depends on the server itself. There is no standard approach.
Load Balancer (Required)
Be sure to configure sticky session on your load balancer because ZK only works correctly on this setting.
Check ZK DesktopImpl.java, you will see there are lots of synchronized
used in many methods including:
- generate desktop ID
- addPage(), removePage()
- enableServerPush()
- processing server push update
The keyword synchronized
only works in a single JVM, so it’s impossible to keep the same state between 2 different nodes with session replication if 2 nodes receive requests at roughly the same time.
Each AU request changes a Desktop's status of a session, if 2 AU requests are processed by 2 different clustering nodes and each one has its own session, then one session state might override another session.
Apache + Tomcat
For configuring Apache + Tomcat, please refer to
- How to Run ZK on Apache + Tomcat clustering, Part I
- How to Run ZK on Apache + Tomcat clustering, Part II
More detail settings
Google App Engine
For configuring Google App Engine, please refer to
Apache + JBoss
For configuring JBoss, please refer to
Glassfish
For configuring Glassfish, please refer to
WebLogic
For configuring WebLogic, please refer to